﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Data;
using CapaEntidades;
using CapaNegocio;

namespace SisHotel
{
    public partial class frmMantenedorHabitacion : System.Web.UI.Page
    {
        protected void Page_Load(object sender, EventArgs e)
        {
            if (!Page.IsPostBack)
            {
                CrearTabla();
                //Cargar el GridView con las habitaciones
                CargarGridView();
                //cargar el DropDownList
                cargarTipoHabitaciones();
            }
        }

        #region "Programacion de Botones"
        protected void btnAgregar_Click(object sender, EventArgs e)
        {
            if (txtPiso.Text.Trim() == "") { txtPiso.Focus(); return; }
            if (txtCapacidad.Text.Trim() == "") { txtCapacidad.Focus(); return; }
            if (txtNumHabitacion.Text.Trim() == "") { txtNumHabitacion.Focus(); return; }
            if (txtEstado.Text.Trim() == "") { txtEstado.Focus(); return; }

            DataTable dt = (DataTable)Session["MantenedorHabitacion"];
            if (Convert.ToInt16(lblID.Text) != 0)
            {
                int id = Convert.ToInt16(lblID.Text);
                for (int i = 0; i < dt.Rows.Count; i++)
                {
                    if (Convert.ToInt16(dt.Rows[i][0].ToString()) == id)
                    {
                        Int16 TipoHabitacion = Convert.ToInt16(ddlTipoHabitacion.SelectedItem.Value);
                        dt.Rows[i][1] = TipoHabitacion;
                        dt.Rows[i][2] = txtEstado.Text;
                        dt.Rows[i][3] = Convert.ToInt32(txtPiso.Text);
                        dt.Rows[i][4] = Convert.ToInt32(txtNumHabitacion.Text);
                        dt.Rows[i][5] = "../Imagenes/simple.jpg";//"../Imagenes/" + System.IO.Path.GetFileName(fuImagen.FileName); 
                        dt.Rows[i][6] = 2;//modificar para el xml
                    }
                }
                Session["MantenedorHabitacion"] = dt;
            }
            else
            {
                //agrega nueva fila
                DataRow r = dt.NewRow();
                Int16 TipoHabitacion = Convert.ToInt16(ddlTipoHabitacion.SelectedItem.Value);
                r["IDHABITACION"] = 0;
                r["IDTIPOHABITACION"] = TipoHabitacion;
                r["ESTADO"] = txtEstado.Text;
                r["PISOHABITACION"] = Convert.ToInt32(txtPiso.Text);
                r["NUMEROHABITACION"] = Convert.ToInt32(txtNumHabitacion.Text);
                r["IMAGEN"] = "../Imagenes/simple.jpg"; //"../Imagenes/" + System.IO.Path.GetFileName(fuImagen.FileName);
                r["TIPOEDICION"] = 1;
                dt.Rows.Add(r);
            }
            limpiarControles();
            CargarGridView();
            cargarTipoHabitaciones();
        }
        protected void btnGuardar_Click(object sender, EventArgs e)
        {
            try
            {
                DataTable datos = (DataTable)Session["MantenedorHabitacion"];
                int i = negHabitacion.Instancia.RegistrarHabitacionXML(datos);
                if (i > 0)
                {
                    lblMensaje.Text = "Se Actualizo satisfactoriamente";
                    CrearTabla();
                    CargarGridView();
                    cargarTipoHabitaciones();
                }
            }
            catch (Exception ex)
            {
                lblMensaje.Text = ex.ToString();
            }
            /*if (txtPiso.Text.Trim() == ""){txtPiso.Focus();return;}
            if(txtCapacidad.Text.Trim() == ""){txtCapacidad.Focus();return;}
            if (txtNumHabitacion.Text.Trim() == ""){txtNumHabitacion.Focus();return;}
            entHabitacion h = new entHabitacion();
            Int32 IdTipoHab = ddlTipoHabitacion.SelectedIndex;
            entTipoHabitacion th = new entTipoHabitacion();
            th = negTipoHabitacion.Instancia.BuscarTipoHabxId(IdTipoHab + 1);
            h.PisoHabitacion = Convert.ToInt32(txtPiso.Text);
            h.TipoHabitacion = th;
            h.NumeroHabitacion = Convert.ToInt32(txtNumHabitacion.Text);
            h.Imagen = "../Imagenes/" + System.IO.Path.GetFileName(fuImagen.FileName);
            bool retorno = negHabitacion.Instancia.RegistrarHabitacion(h);

            if (retorno)
            {
                Response.Write("<script>alert('Se inserto correctamente')</script>");
            }
            else
            {
                Response.Write("<script>alert('No se inserto correctamente')</script>");
            }
            CargarGridView();
             */
        }
        protected void btnCancelar_Click(object sender, EventArgs e)
        {
            lblMensaje.Text = "";
            limpiarControles();
        }
        #endregion

        #region "Metodos"
        private void CrearTabla()
        {
            try
            {
                //crear estructura de TipoHabitacion
                DataTable dt = new DataTable();
                dt.Columns.Add("IDHABITACION", Type.GetType("System.Int32"));
                dt.Columns.Add("IDTIPOHABITACION", Type.GetType("System.Int32"));
                dt.Columns.Add("ESTADO", Type.GetType("System.Char"));
                dt.Columns.Add("PISOHABITACION", Type.GetType("System.Int32"));
                dt.Columns.Add("NUMEROHABITACION", Type.GetType("System.Int32"));
                dt.Columns.Add("IMAGEN", Type.GetType("System.String"));
                dt.Columns.Add("TIPOEDICION", Type.GetType("System.Int32"));
                dt.Columns.Add("NOMBRETIPOHAB", Type.GetType("System.String"));
                dt.Columns.Add("PRECIO", Type.GetType("System.Double"));
                dt.Columns.Add("DESCRIPCION", Type.GetType("System.String"));

                List<entHabitacion> Lista = negHabitacion.Instancia.ListarHabitaciones();
                for (int i = 0; i < Lista.Count; i++)
                {
                    DataRow r = dt.NewRow();
                    r["IDHABITACION"] = Lista[i].IdHabitacion;
                    r["IDTIPOHABITACION"] = Lista[i].TipoHabitacion.IdTipoHabitacion;
                    r["ESTADO"] = Lista[i].Estado;
                    r["PISOHABITACION"] = Lista[i].PisoHabitacion;
                    r["NUMEROHABITACION"] = Lista[i].NumeroHabitacion;
                    r["IMAGEN"] = Lista[i].Imagen;
                    r["TIPOEDICION"] = 0;
                    r["NOMBRETIPOHAB"] = Lista[i].TipoHabitacion.NombreTipoHab;
                    r["PRECIO"] = Lista[i].TipoHabitacion.Precio;
                    r["DESCRIPCION"] = Lista[i].TipoHabitacion.Descripcion;
                    dt.Rows.Add(r);
                }
                Session["MantenedorHabitacion"] = dt;
            }
            catch (Exception ex)
            {
                lblMensaje.Text = ex.ToString();
            }
        }
        private void limpiarControles()
        {
            lblID.Text = "0";
            txtNumHabitacion.Text = string.Empty;
            txtCapacidad.Text = string.Empty;
            txtPiso.Text = string.Empty;
        }
        private void cargarTipoHabitaciones()
        {
            ddlTipoHabitacion.DataSource = negTipoHabitacion.Instancia.ListarTipoHabitacion();
            ddlTipoHabitacion.DataTextField = "NOMBRETIPOHAB";
            ddlTipoHabitacion.DataValueField = "IDTIPOHABITACION";
            ddlTipoHabitacion.DataBind();
        }
        private void CargarGridView()
        {
            DataTable datos = (DataTable)Session["MantenedorHabitacion"];
            gvDatos.DataSource = datos;
            gvDatos.DataBind();
        }
        #endregion

        protected void gvDatos_SelectedIndexChanged(object sender, EventArgs e)
        {
            GridViewRow id = gvDatos.SelectedRow;
            try
            {

                lblID.Text = id.Cells[0].Text;
                ddlTipoHabitacion.SelectedValue = id.Cells[4].Text;
                txtEstado.Text = id.Cells[5].Text;
                txtPiso.Text = id.Cells[2].Text;
                txtNumHabitacion.Text = id.Cells[6].Text;
                /*lblID.Text = id.Cells[0].Text;
                ddlTipoHabitacion.SelectedValue = id.Cells[8].Text;
                txtEstado.Text = id.Cells[9].Text;
                txtPiso.Text = id.Cells[10].Text;
                txtNumHabitacion.Text = id.Cells[11].Text;
                fuImagen.GetRouteUrl(id.Cells[11].Text);*/
                //fuImagen.FileName.ToString = id.Cells[5].Text;
            }
            catch (Exception ex)
            {
                lblMensaje.Text = ex.ToString();
            }
        }

        protected void gvDatos_RowDeleting(object sender, GridViewDeleteEventArgs e)
        {
            try
            {
                DataTable dt = (DataTable)Session["MantenedorHabitacion"];
                int x = int.Parse(gvDatos.Rows[e.RowIndex].Cells[0].Text);
                for (int i = 0; i < dt.Rows.Count; i++)
                {
                    if (Convert.ToInt16(dt.Rows[i][0].ToString()) == x)
                    {
                        dt.Rows[i][6] = 3;
                    }
                }
                Session["MantenedorHabitacion"] = dt;
                CargarGridView();
            }
            catch (Exception ex)
            {
                lblMensaje.Text = ex.ToString();
            }
        }
    }
}